Requests

Requests are shared tickets for asking that music be added or corrected. Every authenticated, unlocked user can browse the request list, create a request, and comment.

Categories

Category Intended use
Add Album Ask for an album that is not in the library
Add Song Ask for a specific song
Artist Correction Report incorrect artist metadata
Album Correction Report incorrect album metadata or artwork
General Any other library request

The stored status values are Pending, In Progress, Completed, and Rejected. New requests always start Pending.

In 2.2.0, the creator can mark a request Completed. The web UI and native API do not provide an administrator-only transition to In Progress or Rejected, even though those values appear in filters and the data model.

Create a request

Open Requests, select New Request, and provide:

  • a category and required description;
  • optional artist, album, song, and release year;
  • an optional HTTPS reference URL;
  • optional notes.

Artist and album pages can prefill target IDs and names when they link into the request form. Target IDs provide a more reliable association than text alone.

Good requests identify one item, include enough metadata to distinguish editions, and link to a reputable catalog when useful.

Who can change a request

The request creator can:

  • edit its descriptive fields;
  • mark it Completed;
  • delete it while it is still Pending.

Other users, including administrators, cannot edit, complete, or delete it through the current request service. All authenticated users can view and comment on all requests.

Comments can reply to another comment. The web page renders Markdown and distinguishes system-generated comments. A request’s creator and commenters become participants for unread-activity tracking.

Automatic album completion

When LibraryInsert adds an album, Melodee checks open Add Album requests:

  1. a target artist ID can identify the artist, otherwise normalized artist and album names must match;
  2. if the request has a release year, the year must match;
  3. a match marks the request Completed and adds a system comment linking to the album.

The match is exact after normalization, not fuzzy.

The codebase contains an Add Song matching routine, but it is not connected to the album-insert event in 2.2.0. Add Song requests therefore need to be completed manually.

Activity and filtering

The request list supports:

  • text search across the normalized description, artist, album, and song fields;
  • status and category filters in the web UI;
  • My Requests;
  • artist or album target filters.

The navigation activity indicator applies only to participants. Activity generated by somebody else is unread until the participant opens the request or calls the “seen” API.

Melodee does not send request emails in 2.2.0. “Notification” means the in-application unread indicator.

Native API

The API requires a native bearer token.

GET    /api/v1/requests
GET    /api/v1/requests/{requestGuid}
POST   /api/v1/requests
PUT    /api/v1/requests/{requestGuid}
POST   /api/v1/requests/{requestGuid}/complete
DELETE /api/v1/requests/{requestGuid}

GET    /api/v1/requests/{requestGuid}/comments
POST   /api/v1/requests/{requestGuid}/comments

GET    /api/v1/requests/activity
GET    /api/v1/requests/activity/unread
POST   /api/v1/requests/{requestGuid}/seen

List query parameters include page, pageSize, query, mine, status, artistApiKey, albumApiKey, and songApiKey.

Example create body:

{
  "category": "AddAlbum",
  "description": "Please add the original 1969 release.",
  "artistName": "The Beatles",
  "albumTitle": "Abbey Road",
  "releaseYear": 1969,
  "externalUrl": "https://musicbrainz.org/release/example",
  "notes": "Stereo edition preferred."
}

Example nested comment:

{
  "body": "This release ID is the right edition.",
  "parentCommentApiKey": "00000000-0000-0000-0000-000000000000"
}

Omit parentCommentApiKey for a top-level comment. See Native API for authentication and response conventions.